package com.probiz.estore.system.service;

import java.util.List;
import java.util.Map;
import java.util.Set;

import com.probiz.estore.common.model.system.Region;
import com.probiz.estore.core.service.GenericManager;
import com.probiz.estore.system.model.UserDefinedRegionFullyModel;

/**
 * Manager interface for Region, responsible for business processing, and communicate between web and persistence layer.
 *
 */
public interface RegionManager extends GenericManager<Region> {
	/**
	 * 获取默认根地区，当前为中国
	 * @return
	 */
	public Region getDefaultRootRegion();
	
	/**
	 * 更新列表的排序值，越靠前值越小
	 * @param regionIds 要更新的id集合
	 */
	public void updateRegionsSortOrder(Integer[] regionIds) ;
	
	
	/**
	 * 完全删除方法
	 * @param entity 要删除的地区实体
	 * @return 返回信息 
	 */
	public Map<String, Object> deleteFully(Region entity);
	/**
	 * 完全保存方法
	 * @param entity
	 */
	public void saveFully(Region entity);
	
	/**
	 * 根据地区id获取自定义区域
	 * @param regionId
	 * @return
	 */
	public List<Region> getUserSubRegion(Integer regionId);
	
    /**
     * 获得所有用户自定义地区
     * @return
     */
	public List<Region> getAllUserDefinedRegion();
	/**
	 * 自定义区域完全删除方法
	 */
	public void deleteFullyForUserDefinedType(Region entity);
	/**
	 * 自定义区域完全保存方法
	 * @param entity
	 */
	public void saveFullyForUserDefinedType(UserDefinedRegionFullyModel model);
	
	/**
	 * 获得子区域
	 * @param region
	 * @return
	 * 
	 */
	public Set<Region> getChildrenByRegionId(Integer regionId);
}
